Call Routing Using Call Forwarding Options In Telephony Networks

ABSTRACT

In some embodiments, a method receives a call from a caller device that is initiated via a first communication channel and directed to first contact information for a recipient&#39;s device. The call is forwarded using a call forwarding option to the computing device. Second contact information for the recipient&#39;s device is retrieved where the second contact information different from the first contact information used in the call. The method initiates a communication to the recipient&#39;s device using the second contact information via a second communication channel that is different from the first communication channel. The communication avoids triggering the call forwarding option for the recipient&#39;s device. The call is connected between the caller device and the recipient&#39;s device upon initiating the communication where the computing device is in a call path of the call and performs a call feature for the call.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation application and, pursuant to 35U.S.C. § 120, is entitled to and claims the benefit of earlier filedapplication U.S. application Ser. No. 16/024,396 filed Jun. 29, 2018,which claims priority to U.S. Provisional App. No. 62/528,037, entitled“Mixed-Mode Communications for Audio Calls”, filed Jul. 1, 2017, thecontents of all of which are incorporated herein by reference in itsentirety.

BACKGROUND

Cellular phone calls have traditionally lacked any features besidesbasic initiation of a two-way voice call (e.g., answering a call) andvoicemail (e.g., declining a call). While additional voice features suchas call recording and transcription exist in telephony systems, thesefeatures have not been accessible by calls made directly to a cellularphone number.

The lack of access is because access to native voice calls is limited tothe cellular ecosystem, which includes mobile operators and theirequipment vendors, mobile device operating systems, and devicemanufacturers. As a result, third-party applications and developers havenot had the ability to easily tap into and manipulate native voicecalls.

The cellular ecosystem has not opened up the development of mobilecalling features to third party developers due in part to the securityconcerns such as unauthorized eavesdropping. Additional complexitiesinclude the need for technology standardization as well as thecoordination and cost required to provide and manage this access.Additionally, the cellular industry has traditionally focused theirefforts on broader-reach consumer features such as increased databandwidth and higher clarity voice calls instead of features that mayonly be relevant to specific groups such as professionals or industriesthat require them due to legal regulations.

Hence, cellular phone calls and the phone's native dialer application(also known as the “dialer app” or “phone app”) have not been the focusof feature innovations even though some features, such as the ability torecord and transcribe mobile calls, would be useful to individuals suchas sales professionals for coaching purposes or in the financialservices industry, which currently mandates that communications withclients be recorded and archived.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example of a Public Switched Telephone Network (PSTN)according to some embodiments.

FIG. 2 shows the flow of calls where the recipient device has callforwarding set up and the forwarding number is configured to be a DirectInward Dial (DID) number that routes the calls to the application server38 according to some embodiments.

FIG. 3 depicts a simplified flowchart of a method for selecting aconnection option for unconditional call forwarding according to someembodiments.

FIG. 4 shows a system with a calling device with phone number 5550000001using a blocklist according to some embodiments.

FIG. 5 depicts a simplified flowchart of a method for determining whichof CCF or UCF was used according to some embodiments.

FIG. 6 depicts a system showing a flow of a conversation where voice isconverted to text and text is used to reply according to someembodiments.

FIG. 7 illustrates an example of a special purpose computer systemsconfigured with an application server according to one embodiment.

DETAILED DESCRIPTION

Described herein are techniques for a communication system. In thefollowing description, for purposes of explanation, numerous examplesand specific details are set forth in order to provide a thoroughunderstanding of particular embodiments. Particular embodiments asdefined by the claims may include some or all of the features in theseexamples alone or in combination with other features described below,and may further include modifications and equivalents of the featuresand concepts described herein.

A method, computer system, computer program product, phone application,and user interface is provided for enabling call recording,transcription and other features on cellular phone calls that havetraditionally been isolated from third-party applications. In order toadd features and functionality to cellular phone calls, a system insertsitself between the caller and recipient's call. In some embodiments, theinsertion is accomplished by configuring settings, such as the callforwarding settings, for the mobile device to divert calls to anapplication server instead of the default voicemail server of thewireless operator. This way, incoming calls can pass through applicationservers that apply new features to the calls before connecting the callsto a chosen destination. The features may include additional featuresthat are not present in a callee to caller connection. Instead of thecaller's call being connected to the recipient directly, the call passesthrough the application server before being connected with therecipient. The application server remains in the path of the call and isable to provide features for routing as well as processing media for theduration of the call.

An application (“device application”) residing on the mobile device cancommunicate and coordinate with the application server using a dataconnection to perform additional functionality on the mobile device.This device application can enable control functions such as startingand stopping call recording on the server, transferring the call toanother party, sending the call to voicemail or choosing a specificvoicemail greeting to play, etc.

The device application can also be used by the recipient to makeoutbound calls so that the calls can first pass through the applicationservers before being connected to the intended recipient, therebyenabling new call features for outgoing calls as well.

The device application can also organize and display a history ofinbound and outbound calls, call recordings, and transcripts byindividual contacts. The text in the recordings can be indexed by thedevice application or a server-side storage engine and made searchable.

The application server can also send a copy of the audio streams toother services in real-time. For example, the participants' speech canbe sent to a speech-to-text engine and the resulting text shown toparticipants in the conversation to aid in comprehension should usershave difficulty hearing each other. The audio or text can also be usedby in-call virtual assistants that use natural language processing (NLP)to understand the conversation and perform actions in response to whatis spoken.

Traditionally, phone calls made to a recipient's mobile device arerouted from the caller's operator to the callee's operator through thecircuit-switched Public Switched Telephone Network (PSTN). FIG. 1depicts an example of a PSTN according to some embodiments. As shown inFIG. 1, the phone call is routed from an initial calling device 10(e.g., user device A) to the caller's home operator network 11, thenthrough a network 13, such as a Signaling System No. 7 (SS7) network(e.g., PSTN), and finally to the recipient's operator network 15 andrecipient's device 16 (e.g., user device B). The call is routed usingthe recipient's PSTN number (e.g., a cellular phone number).

The audio stream from the first user device passes between bothoperators' networks and equipment through the PSTN at 12 and 14, and theaudio stream from the second user device passes the opposite way at 17and 18 before reaching the first user's home operator network 11 anddevice 10.

The recipient's device 16 may be configured to redirect the call tovoicemail via device settings. This setting may ring the recipient'sdevice first before redirection. For example, if the conditional callforwarding (CCF) settings for the receiver's device have been configuredto redirect the caller to the receiver's network operator's voicemailnumber, the call is redirected to voicemail using the voicemail numberand the caller will hear the voicemail greeting and be asked to leave amessage.

Some configured CCF settings include Call Forwarding Busy (CFB) wherebyincoming calls are diverted when the recipient is on another call orrejects the call by choosing the Decline option on the incoming callscreen; Call Forwarding on No Answer (CFNA) whereby incoming calls arenot answered within a specified number of seconds; and Call Forwardingon Not Reachable (CFNRC) where the recipient's device is off or does nothave coverage.

The recipient's device can also be configured with Call ForwardUnconditional (CFU), which will unconditionally divert all calls to aspecified phone number. This will cause all inbound calls made to therecipient's phone number to be sent to the specified number withoutfirst ringing the recipient's phone.

In some embodiments, call forwarding can be configured on mobile devicesusing settings of the operating system, such as via the settings menus.Alternatively, call forwarding can be configured using codes, such asUnstructured Supplementary Service Data (USSD) codes, also known as“star codes”, which are entered into the mobile device's native phonedialer and called. Each carrier may have a different set of star codesto perform each type of forwarding configuration.

Typically, call forwarding forwards calls to a voicemail server.However, for new calling features to be applied to incoming calls,incoming phone calls should be sent to an application server beforebeing answered by the recipient. Either unconditional call forwarding orconditional call forwarding can be used to accomplish this call flow byconfiguring a forwarding phone number that corresponds to theapplication server, which replaces the voicemail server's phone numberthat may have been configured originally.

Typically, once the call was redirected to the voicemail server, therecipient could not answer the call. However, some embodiments apply thecalling features while also connecting the call to the recipient. Forthe recipient to communicate with the caller, after redirection to theapplication server, the application server may connect the incoming callbetween the application server and the recipient. When the applicationserver receives a diverted phone call as a result of the call forwardingsetting the user has configured, at least two pieces of information havebeen added to the signaling that the application server receives fromthe phone network: the caller's phone number and the original dialednumber (e.g., the recipient's phone number). The application server usesthe two pieces of information to initiate a call between the applicationserver and the recipient's device. One example of how this informationis transmitted includes using a header in a control message to includethe numbers. For example, a Diversion header of session initiationprotocol (SIP) messages that are used in call control of VoIP calls mayinclude the numbers. Other information that is transmitted includes thereason for the diversion, the number of times the call was diverted,etc.

FIG. 2 shows the flow of calls where the recipient device has callforwarding set up and the forwarding number is configured to be a DirectInward Dial (DID) number that routes the calls to the application server38 according to some embodiments. The recipient's device may set up callforwarding and specify the application server's phone number as theforwarding number. The call forwarding may be set using a deviceapplication or by an operating system menu or feature of the recipient'sdevice.

When a phone call is made by a caller device 30, the call is carried bycaller's operator network 31 and passes through the PSTN 33 to therecipient's operator network 35. Because of the call forwarding setup,instead of sending the call to the recipient's device 36, therecipient's operator network diverts the call to the applicationserver's phone number that is configured by the call forwarding settingsof the user's phone number. The provider servicing the applicationserver's phone number converts the PSTN call to a VoIP call using atelephony gateway 37 and the call is then carried over a data network 42to the application server. The application server receives the inboundcall (e.g., the first “call leg”) from the caller, initiates a new callwith the recipient device (e.g., the second call leg) and bridges thetwo calls so the caller and callee's calls are connected. That is,application server 38 is connected in between the caller and the calleeand bridges the two calls.

The call made by the application server 38 to the callee can be acircuit-switched (PSTN) call or a Voice over IP call. If a PSTN call ischosen, a VoIP call may first be initiated from the application server38 to the data network 42 and sent out the VoIP gateway 37, whichconverts the VoIP call to a PSTN call. The call is routed through thePSTN 33 to the recipient device's operator network 35 and on to therecipient's device 36. If a VoIP call is chosen, the application serverestablishes a VoIP connection at 43 with the recipient's device 36through a data connection instead of a PSTN connection.

In both embodiments, the application server 38 sits in the voice pathbetween the calling device 30 and the recipient device 36, givingapplication server 38 the ability to provide features such as recordingthe media passing through application server 38 or sending a copy of themedia to a speech-to-text engine 44 to convert the voice media to textin real time. The text can be input to a language translation engine 47that translates it into the recipient's language. The text from thetranslation can then be sent to a text-to-speech engine 46 and the audiooutput can be sent to the application server 38 and played in the callto the recipient device 36. The reverse process can then be followed forspeech from the recipient where the application server 38 sends a copyof the recipient's speech to the speech-to-text server 44 and theresulting text sent to the language translation engine 47 fortranslation to the caller's language. The application server 38 sendsthe resulting converted text to the text-to-speech engine 46 and speechis played back by the application server 38 into the call for the callerto hear.

Because the recipient operator's voicemail server is no longerconfigured in the call forwarding settings for the user's phone number,application server 38 can provide its own voicemail functionality to therecipient by routing the call to a voicemail server 45 separate from theoperator's voicemail server.

Application server 38 may be inserted into the call path using differentcall forwarding techniques. Within each technique, different methods ofinserting application server 38 into the call path may be used. Theinsertion of application server 38 may be accomplished using settingsnative to an operating system of the recipient's device 36 or by using adevice application downloaded to the recipient's device 36. The use ofthe native settings allows application server 38 to be inserted into thecall path without having any other applications downloaded to therecipient's device 36. The features can be provided in the call pathseamlessly and without the requirement of having an application runningon the recipient's device 36. This provides many advantages. Forexample, an application does not need to be downloaded to therecipient's device 36. Also, the features can be provided without havingan application running on the recipient's device 36 or running in thebackground. Further, an application does not need to be opened toprovide the features when a call is received. The use of the setting ofthe operating system allows the processing of the features to be solelyin the application server 38. This configuration uses less resources onthe recipient's device 36 because the processing is performed on theapplication server 38 without the need for an application to be runningon the recipient's device 36.

Using application server 38 to provide features in the processing ofmedia between the caller and the callee also provides advantages.Certain applications such as speech-to-text conversion/transcription orsentiment analysis from a speaker's voice requires significantcomputational power that may not be available on the recipient's device36 whereas a more powerful application server 38 can be used for suchfeatures. Other applications such as Natural Language Processing (NLP)require large data sets that may not fit into the storage and memory onthe recipient's device 36 but can do so on the application server 38.The operating system of the recipient's device 36 may also not permit anapplication to run in the background so call features would not beavailable if the recipient's device 36 is using a PSTN call in theforeground to connect to the application server 38.

The description below of various embodiments will explain in more detailhow unconditional call forwarding and conditional call forwarding isused with four ways application server 38 can establish a call with arecipient device—outgoing VoIP call, incoming VoIP call, outgoing PSTNcall, and incoming PSTN call.

Unconditional Call Forwarding

If all incoming calls, such as PSTN calls, to the recipient are to bediverted to application server 38, Unconditional Call Forwarding (UCF)may be used. However, after application server 38 receives the divertedcall, application server 38 is not able to make an outbound PSTN call toconnect to the recipient number since the call will be diverted back toapplication server 38 due to the call being unconditionally forwardedagain. Because call forwarding settings may be configured with thedevice operator for PSTN calls only, VoIP calls to the deviceapplication are not diverted by the PSTN call forwarding rules and canbe used to connect application server 38 with the device application.

In one embodiment, after application server 38 receives the inboundcaller's diverted call, application server 38 analyzes the call todetermine the call forwarding settings. For example, application server38 determines whether UCF was used to redirect the call. Applicationserver 38 may determine that UCF was used by looking at fields in thecall that is received, such as in SIP messages. If UCF was used, thenapplication server 38 determines that a call other than a PSTN call isneeded. In other embodiments, application server 38 is preconfigured torecognize that UCF was used.

Outbound VoIP Call

Upon determining that UCF was used, application server 38 may connect tothe recipient's device 36 using an outbound VoIP call. In order forapplication server 38 to know where to route the outgoing VoIP call,application server 38 can determine contact information for therecipient's device for a VoIP call. In some embodiments, the recipient'sdevice application can register an address, such as the SIP address,where recipient's device 36 can be reached (e.g., Internet Protocol (IP)address, port, and transport protocol) to a registration server ordatabase (not shown) that can be accessed by application server 38.Application server 38 can be configured to search the registrationserver for the recipient's VoIP address upon determining UCF was used.

Application server 38 can then make an outgoing VoIP call to theregistered address of the recipient's device. The device applicationreceives the VoIP call and shows the user an inbound call screen to givethe user an option to answer or decline the call. If the user answersthe call, application server 38 creates the VoIP connection between thedevice application and application server 38, and application server 38bridges the call with the original caller's call leg.

If the device application has not yet registered its network address orthe registration has expired, application server 38 can send the deviceapplication a push notification to ask the recipient's device 36 toregister its network address. Once the network address is registered,application server 38 can retrieve the network address and then make anoutbound VoIP call to the device application.

Inbound VoIP Call

In another embodiment, the push notification can also be used to triggerthe device application to make a VoIP call to application server 38instead of requiring the device application to register its networkaddress or wait for the server to initiate a VoIP call to it. In thiscase, when the push notification is received by the device application,the device application shows the recipient the inbound call screen. Thepush notification will also contain the application server's contactinformation, such as a network and SIP address, so the deviceapplication can initiate a VoIP call to application server 38 when therecipient answers the call on the inbound call screen. The deviceapplication calls a SIP address that can contain instructions tellingapplication server 38 which caller's PSTN call to bridge the call with.For example, the original caller's PSTN call could have a CallIdentifier that is unique for each inbound calls on application server38. The device application could embed this Call ID into the SIP addresswhen making the VoIP call to application server so application server 38can bridge the call to the correct caller's PSTN call leg.

Inbound PSTN Call

In another embodiment where a PSTN call between application server 38and recipient device 36 is desired, the recipient's device 36 callsapplication server 38 (instead of application server 38 calling thedevice 36 because of the unconditional forwarding setup that preventsthe recipient device 36 from receiving any PSTN calls). Thus, when anincoming call arrives at application server 38, application server 38first sets up a mapping of known phone numbers that the recipient couldbe calling from, a dial-in phone number corresponding to applicationserver 38 that the recipient device will call, and the caller's PSTNcall leg identifier. Application server 38 then sends the recipientdevice a push notification with the dial-in number. When the deviceapplication receives the push notification, it shows the recipient anincoming call screen. When the recipient answers the call, the deviceapplication initiates a PSTN call from the device to the dial-in numberof application server 38. When application server 38 receives the PSTNcall, application server 38 looks up the original caller's call leg onapplication server 38 by using the recipient's phone number and bridgesthe recipient's call with the original caller's call leg.

In some examples, application server 38 may select one of the connectionoptions. FIG. 3 depicts a simplified flowchart of a method for selectinga connection option for unconditional call forwarding according to someembodiments. At 302, application server 38 receives a redirected callfrom the recipient's device 36. The call was redirected usingunconditional call forwarding. At 304, application server 38 determinesthat unconditional call forwarding was used to redirect the call. Insome embodiments, application server 38 determines that unconditionalcall forwarding was used by analyzing fields in a message received.

At 306, application server 38 analyzes information for the recipient'sdevice to determine one of the connection options to select. Theanalysis may determine which option is the highest ranked option. Forexample, depending on a status of the recipient's device 36, a VoIP callmay be desired. If a recipient's device is stationary and in an areawith good data connectivity, a VoIP call may be preferred so the calldoes not consume PSTN minutes from the recipient's phone plan. If arecipient is in a moving vehicle where data connectivity is of anunpredictable nature, a PSTN call may be preferred. The device canreport these conditions to the application server 38 and the applicationserver 38 can select the appropriate connection to use for differentconditions.

At 308, application server 38 initiates a communication with therecipient's device 36 to connect the call. The communication may use theselected connection option.

Conditional Call Forwarding

Some users may prefer to have certain calls to pass through applicationserver 38 while allowing other calls to reach them directly. In order toaccomplish this, Conditional Call Forwarding (CCF) can be used insteadof Unconditional Call Forwarding (UCF). The use of CCF allows calls toreach recipients directly if the user picks up an incoming call. Oneconfiguration uses CCF to divert calls to the operator's voicemailservice if the calls are unanswered, the mobile device is unreachable,or if the user is busy and chooses the Decline option on the incomingcall screen of the phone.

Sending to Application Server by Declining Call

The device application can configure the CCF number to be the number ofapplication server 38. By configuring the CCF number to be theapplication server's number, the call recipient is able to decline thecall to divert the call to application server 38, which can remain inthe path of the call while routing the call back to the recipient'sphone. If the recipient chooses to answer the incoming call withoutdeclining it, the recipient will be able to speak to the caller withoutapplication server 38 in the path of the call.

Sending to Application Server Using Selective Call Blocking

In another embodiment, conditional call forwarding is used inconjunction with selective call blocking functionality on therecipient's device 36. Selective call blocking involves thespecification of a list comprising one or more phone numbers (the“blocklist” on the recipient's device 36. When the phone number of anincoming caller (the “caller ID” number) matches a number on theblocklist, the recipient's device 36 automatically rejects the call andthe call will be diverted to the phone number configured in the CCFsettings. The call is then routed to application server 38.

Manual Configuration of Call Blocking

Blocklists may be used to prevent calls from undesirable phone numbers,such as a nuisance caller, from reaching the recipient. The recipient'sdevice 36 can configure blocking and unblocking of individual callers inthe mobile device configuration settings of the operating system.Blocking phone numbers manually causes the device to add the blockednumbers to the list of blocked numbers (the “blocklist”) for therecipient's device 36.

When a call arrives on the recipient's device 36, the recipient's device36 checks its blocklist and rejects the call before ringing therecipient's device 36. The blocked call is diverted to the numberconfigured in the CCF settings. When the CCF number is configured to bethe application server's number, the call is diverted to applicationserver 38. In one embodiment, when application server 38 receives thediverted call, application server 38 initiates a VoIP or PSTN call tothe recipient's device 36 with a different caller ID number that isknown to not be on the blocklist of the device (for example, by settingthe caller ID to be the CCF number of application server 38 so that thecall rings through to the recipient device 36 instead of being blockedagain). Application server 38 may receive the blocklist and analyze theblocklist to select a number not on the blocklist.

FIG. 4 shows a system with a calling device 30 with phone number5550000001 using a blocklist according to some embodiments. Arecipient's device 36 with phone number 555-000-0002 has a configuredblocklist that includes the caller's phone number 5550000001. Therecipient's device 36 has a conditional call forwarding configuration todivert rejected calls to the application server at a phone number of555-555-5555.

When the caller makes a call to the recipient device 555-000-0002, thecaller's operator network 31 routes the call through the PSTN 33 to therecipient operator network 35 and recipient's device 36. The recipient'sdevice 36 checks its blocklist, which includes the caller's number5550000001, and rejects the call, sending the back to the recipient'soperator network 35. The recipient's operator sends the call to therecipient's conditionally forwarded number, 555-555-5555 by routing thecall back to the PSTN 33 and through the VoIP gateway for 555-555-5555.The call is sent to application server 38, which receives informationfrom the incoming call signaling and diversion headers that the caller'snumber is 5550000001 and the original recipient number is 555-000-0002.

In some embodiments, a format of an example message, such as a SIPINVITE message, that the application server receives when the inboundcall is diverted to the application server 38 can be seen below. “xxx”indicates server IP addresses or names that have been replaced for thepurposes of this example.

INVITE sip:5555555555@xxx:5060 SIP/2.0

Record-Route: <sip:xxx;lr=on>Via: SIP/2.0/UDP xxx;branch=z9hG4bKcb94.40ff17a3.0

Max-Forwards: 67

From: <sip:5550000001@xxx;isup-oli=62>;tag=a8KFgr53vtKyNTo: <sip:5555555555@xxx:5060>Call-ID: 24169b4d-593d-454c-9f9f-835a99c6acf9

CSeq: 124533787 INVITE

Contact: <sip:5550000001@xxx:5070>

User-Agent: SIP-AGENT Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE,INFO, UPDATE, REGISTER, REFER, NOTIFY

Supported: timer, path, replacesAllow-Events: talk, hold, conference, referSession-Expires: 3600;refresher=uac

Min-SE: 120

Content-Type: application/sdpContent-Disposition: session

Content-Length: 273

Diversion: <sip:5550000002@xxx:5060>;privacy=off;screen=no;reason=user-busy; counter=1Remote-Party-ID:<sip:5550000001@xxx>;party=calling;screen=yes;privacy=offv=0o=Sonus UAC 844748 224910 IN IP4 xxxs=SIP Media Capabilitiesc=IN IP4 xxxt=0 0m=audio 28548 RTP/AVP 0 18 101a=rtpmap:0 PCMU/8000a=rtpmap:18 G729/8000a=fmtp:18 annexb=noa=rtpmap:101 telephone-event/8000a=fmtp:101 0-15a=maxptime:20

From the example SIP INVITE message, the original caller's number5550000001 can be ascertained from the “From” or “Remote-Party-ID” line,the original called number (the recipient's number) from the ‘Diversion”line, and the application server's number from the “To” or INVITE line.

Application server 38 then sets the caller ID of the outgoing call to bea different phone number such as 5550000002 before making the outboundPSTN call 70 to the original recipient's number 555-000-0002. The callroutes back out the VoIP gateway 37 to the PSTN 33, to the recipient'soperator network 35 and to the recipient's device 36. Because the callerID of this call is not in the blocklist on the recipient's device 36,the recipient's device 36 rings and the call is connected to therecipient with application server 38 bridging both the original callerand recipient's call legs. Again, the goal of having application server38 in the middle of the call is accomplished without having to have anapplication running on the recipient's device to add the applicationserver 38 to the call. Rather, settings on the operating system are setto add the application server 38 to the call.

In another embodiment, after the caller's diverted call arrives atapplication server 38, application server 38 creates a connection to therecipient device 36 using a VoIP call. Application server 38 can usepre-existing information stored in a mapping table to look up the VoIPaddress (e.g., a SIP uniform resource indicator (URI)) of therecipient's device application). Application server 38 sets the callerID of the call to 5550000002 and makes the outgoing VoIP call to therecipient device 36, resulting in the device application receiving theincoming call as VoIP instead of as a PSTN call from its home operator.

The VoIP address mapping table can be populated by the deviceapplication on a regular basis (every hour, for example) so theinformation is available when the caller's call arrives at applicationserver 38. Alternatively, application server 38 can send a pushnotification to the recipient's device application requesting its VoIPaddress only when the caller's call arrives at application server 38.After the recipient's device application receives the push notificationrequesting its VoIP address, the recipient's device 36 sends theinformation to application server 38. Upon receipt of this information,application server 38 then makes the outgoing VoIP call to the recipientdevice by using the newly reported VoIP address.

In another embodiment, when application server 38 receives the divertedcall, the recipient's device 36 can dial in to application server 38using a VoIP call instead of application server 38 calling out to therecipient's device 36. In this embodiment, upon receipt of an inboundcall 68, application server 38 sends a push notification to therecipient's device application informing the device application that aninbound call has been received. The device application shows therecipient a notification or an incoming call screen on the recipient'sdevice 36. If the recipient chooses to answer the call, the deviceapplication uses information in the push notification that includes theapplication server's VoIP address and initiates a VoIP call toapplication server 38. Upon receipt of this VoIP call from therecipient's device, application server 38 bridges the call to thediverted caller's call leg and establishes an end-to-end call betweenthe caller and the recipient.

In another embodiment, the recipient's device calls in to applicationserver 38 using a PSTN number after the diverted inbound call isreceived on application server 38. Application server 38 sends a pushnotification to the recipient's device application that includes theserver's PSTN “dial-in” number. When the device application receivesthis push notification, the device application shows the recipient anincoming call screen. When the user answers the call, the deviceapplication initiates a PSTN call to the server's dial-in number. Whenapplication server 38 receives the recipient's PSTN call, applicationserver 38 bridges the call with the diverted caller's call leg, therebyconnecting both parties. This example allows the recipient to use a PSTNconnection that is more stable than a VoIP call using the dataconnection for the recipient's device. In addition, the recipient iswould be responsible for the cost of the outbound call from therecipient's device to application server 38 rather than applicationserver 38 incurring the cost of the outbound PSTN call made to therecipient. This can be important for financial and business modelreasons.

Automatically Generated Blocklist

In another embodiment, the blocklist can be generated not manually by auser but automatically by the device application. This enables a list ofknown numbers to be diverted to application server 38 when a caller IDof the calling user is in the blocklist of the receiving party.Automatically generated blocklists can be used when it is desirable tosend calls from a group of known parties, such as work or clientcontacts, through application server 38 before the call is answered bythe recipient. For example, recording of phone calls is desired incertain industries such as finance, where calls with clients need to bearchived for regulatory compliance. By utilizing a blocklist includingonly clients, only calls from this group may be diverted to applicationserver 38 automatically while calls from the user's personal contactswill ring the recipient's phone directly.

If the recipient's device does not contain the list of contact numbersto be automatically populated into the blocklist, the device applicationcan download the list of phone numbers from an external server such as adatabase or Customer Relationship Management (CRM) system. The deviceapplication then automatically populates the blocklist with the list ofthe downloaded numbers. Incoming calls from clients that match theblocklist may then be automatically diverted to application server 38.If the application server 38 also has the same list of client numbersstored, application server 38 can check that the calling number matchesthis list and if so, perform specific actions such as recording thecall, greeting the caller with a recorded message from the recipient'scompany, etc. before connecting the call with the recipient. Callsdiverted to application server 38 that are not in a list on applicationserver 38 can be configured to be directed to the voicemail ofapplication server 38 as callers who are not on the blocklist are alsorouted to application server 38 due to the CCF settings on the devicediverting calls that are not picked up by the recipient.

In another embodiment, one or more lists can be maintained byapplication server 38 to perform different functions on differentcallers. For example, work calls may be treated differently thannuisance callers, e.g., work calls may be recorded and then routed backto the recipient device whereas nuisance callers may be played a busytone and not routed back to the recipient device. To accomplish this,the recipient's device needs to maintain only one blocklist associatedwith application server 38 while application server 38 maintainsdifferent lists with rules for each list or even individual rules foreach calling number. Application server 38 can aggregate the differentlist of numbers and send it to the device application to populate asingle blocklist on the device. Alternatively, the recipient's devicecan request and obtain the aggregated list from application server 38 topopulate its blocklist.

Automatically Generating Inverse Blocklist or Whitelist

In another embodiment, it may be useful to block numbers that are not ona list of known callers. For example, the call recipient may choose toallow known callers to directly ring the recipient's device 36 and notbe diverted to application server 38, whereas unknown callers will befirst sent to application server 38 to be screened or recorded beforethe call is connected to the recipient's device.

To accomplish this, the device application can set up its blocklist tobe all phone numbers that are not in a “whitelist” comprising therecipient's personal contacts from the device's address book andadditional lists such as phone numbers of contacts obtained from CRMsystems. Hence, calls from numbers that are from known contacts will notbe blocked or diverted whereas unknown callers will be directed toapplication server 38 where features can be applied based on rulesdetermined by the recipient.

An operating system of some recipient's devices may have functions thatenable users to block all calls except for known callers. This wouldsimplify the generation of the allowed-caller lists as the list ofnumbers to block could be large compared to the list of approvedcallers. If the option to block all calls except for those originatingfrom whitelisted numbers exists on the device, the user can choose toplace the list of known callers into the whitelist. Alternatively, thedevice application can generate and populate this whitelist on thedevice automatically.

Showing Caller's Phone Number to Recipient Even for Blocked Calls

In the embodiments above where application server 38 makes a call to therecipient's device 36 to connect the recipient to the diverted caller,application server 38 may first set the caller ID of the call to be anumber other than the phone number of the original caller. This is sothat the recipient's device 36 does not block and redirect the callagain because it matches the blocklist. However, this means that whilethe call is not blocked, the recipient may see an unknown phone numberand not the caller's name since the caller ID number will not match acontact in the recipient's device address book. The following representsome methods for overcoming this situation.

Temporarily Disabling the Number in the Blocklist

In the embodiments above where application server 38 makes a call to therecipient's device 36 to connect the recipient to the diverted caller,application server 38 may first set the caller ID of the call to be anumber other than the phone number of the original caller. To displaythe name of the caller, additional actions can be performed to the callflow.

In one embodiment, before calling the recipient's device, applicationserver 38 can first send a push notification to the device applicationto notify the device application that it will be receiving an incomingcall from the caller's phone number. The device application can removethe phone number from the device's blocklist and send an acknowledgementusing an Application Programmer's Interface (API) call to applicationserver 38. Once this acknowledgement is received by application server38, application server 38 can then make the outbound VoIP or PSTN callto the recipient's device. After the call is complete, the recipient'sdevice can re-populate the blocklist with the phone number so subsequentcalls from the caller are blocked and diverted again. If the device isunable to detect when the call completes, the application server 38 can,optionally, send another push notification to the recipient's deviceafter the call ends to instruct it to add the caller's number to theblocklist again.

In another embodiment, application server 38 can send a pushnotification to the recipient's device to notify it to unblock thecaller's number. However, application server 38 may choose not to waitfor an acknowledgement from the recipient's device and, instead, makethe connecting call to the recipient's device after sending the pushnotification, with the assumption that the push notification will bereceived by the device before the call is received.

Non-Blocked Number

Another embodiment utilizes a caller ID number not on the blocklist ofrecipient device 36 when the application server 38 makes an outboundPSTN or VoIP call to the recipient device 36. The application server 38can set the caller ID number to be a phone number that only it is using.The phone number may be one of a plurality of numbers assigned or leasedfor the use by the application server 38.

Because this caller ID number will be used only by the applicationserver 38, the device application can ensure that the blocklist does notcontain the list of known application server caller ID numbers whenautomatically generating the blocklist.

Creating Contact for Ringing-in Number

Another embodiment that enables the display of the caller's name on therecipient device when an inbound call from application server 38 isreceived involves the creation of a contact book entry on the nativedevice that matches the caller ID number that will be used byapplication server 38 for the call.

Prior to sending the call to the recipient's device, application server38 can send a push notification to the recipient's device to inform itof the phone number of the original caller as well as the phone numberthat will be used as the new caller ID of the call from applicationserver 38. When the device application receives this notification, thedevice application first looks up the contact its device address bookcorresponding to the original caller number. The device application thencreates a new contact in the device address book with the name of thecontact found and the new caller ID number that will be used byapplication server 38 for the incoming call.

The device application can send an acknowledgement that the new contactwas created by using an API call to application server 38. Applicationserver 38 can then initiate the call to the recipient's device with thenew caller ID number and the recipient's device will show the name ofthe contact corresponding with the newly created address book entry.Optionally, the device application may not need to send anacknowledgement to application server 38 but application server 38 canmake the call to the recipient's device after sending the pushnotification with the assumption that the push notification will bereceived by the recipient's device and the address book entry will becreated before the call arrives on the recipient's device.

After the call is complete, the device application can remove the newlycreated contact from the device address book or keep it if applicationserver 38 will re-use the same caller ID number for each unique callernumber.

Determination of CCF or UCF

Application server 38 can receive the redirection via CCF or UCF.Different actions are taken to bridge the call between the caller andthe callee based on whether CCF or UCF was used to redirect the call.FIG. 5 depicts a simplified flowchart 500 of a method for determiningwhich of CCF or UCF was used according to some embodiments. At 502,application server 38 receives a redirected call. At 504, applicationserver 38 analyzes the call to determine the call forwarding option froma plurality of call forwarding options used to forward the call. Forexample, application server 38 determines the call forwarding optionthat was used to forward the call. In some embodiments, applicationserver 38 can distinguish between whether CCF or UCF was configured bylooking at a “reason” parameter in a message, such as the SIP INVITEmessage. For example, a “reason=user-busy” means that CCF was used andthe CCF on busy was triggered to divert the call. Also, a“reason=unconditional” means UCF was used.

At 506, application server 38 then selects a mechanism to connect thecall between the caller and the recipient's device 36. The mechanismselected from the mechanisms described above based on the determining ofthe call forwarding option. At 508, application server 38 initiates acommunication to the recipient's device 36 using the mechanism. Themechanism avoids triggering the call forwarding option set at therecipient's device 36. Then, at 510, application server 38 connects thecall between the caller and the recipient's device upon initiating thecommunication. The application server 38 is now in the call path of thecall and performs a call feature, such as processing media of the callor performing routing of the call.

Application Server Routing and Action Rules for Callers

In some embodiments, application server 38 can maintain a table ofcaller numbers and corresponding actions to perform when a diverted callarrives at the application server from the caller device 30. Actions canbe routing-based and configured by the recipient's preference for eachcaller.

Routing-based actions can include not wanting to accept calls fromspecific callers or known spam numbers, or only to accept calls fromknown contact numbers. Feature-based actions can include automaticallyrecording calls from work contacts or unknown numbers, or playing customgreetings to certain users. Users can also be placed into groups thathave the same routing and feature configurations applied. Examples ofgroup routing and features are for business client contacts to begreeted by the company greeting, friend contacts to hear a musicalringback tone, known nuisance callers to be played a busy tone and hungup on, known solicitation callers to be sent to voicemail, and unknowncallers to have call recording applied automatically before the call isconnected to the recipient's device 36.

Mixing Modes of Communication

Some embodiments enable users to communicate using “mixed mode” calls,such as a caller speaks (e.g., first mode) while a recipient can see(e.g., second mode) the caller's speech represented as text inreal-time. The caller may be using voice to communicate because ofsafety or convenience (e.g., when driving or simply because speaking isfaster than typing on a mobile device). However, the recipient may notbe able to engage in a voice conversation due to social norms (e.g. at alibrary or lecture). The recipient may also want the text to supplementthe speech audio due to an inability to hear the speaker (e.g., hearingimpaired or in a loud location such as a concert).

In FIG. 4, a copy of the caller's speech is sent by the applicationserver 38 to the speech-to-text engine 44 in real-time. The transcribedtext is then sent at 43 the device application for display on therecipient device 36. Optionally, if both parties prefer to communicatein different languages, the transcribed text can first be sent to thelanguage translation engine 47 and the translated text is then sent tothe recipient device 36. The display of text on the recipient device 36does not prevent the caller's speech from being sent to the recipient'sdevice 36 so the choice to listen to the call is left to the recipient.

If able, the recipient can choose to speak replies that will be heard bythe caller. However, if the recipient is unable to speak, the recipientcan type a reply into the device application and the text is sent to atext-to-speech engine 46. The audio from the text-to-speech conversionis then sent to the application server 38 and played back as call audioto the caller. Optionally, the text reply can first be sent to thelanguage translation engine 47 for translation to the caller's preferredlanguage and the translated text then input to the text-to-speech engine46 and the audio played back to the caller.

FIG. 6 depicts a system showing a flow of a conversation where voice isconverted to text and text is used to reply according to someembodiments. A caller's device 30 transmits speech at 71 to aspeech-to-text engine 44 that transcribes the audio into a stream ofrecognized text messages in real-time. The transcribed text is then sentat 73 to a recipient's device 36, which displays it at 75 using a deviceapplication on the device. The second user is able to type a response at76 on the device keyboard at 77. Upon submitting the text response tothe application, the application transmits the text reply at 78 to atext-to-speech engine 46 which converts the text to an audio stream thatis sent at 80 to the voice user's device 30 and played back to the voiceuser. The process repeats itself when the voice user speaks a responseto the reply. If able, the text recipient can also use voice to reply byspeaking into the recipient device 36 and be heard by the caller device30

System

FIG. 7 illustrates an example of a special purpose computer systems700-1-700-3 configured with an application server 38 according to oneembodiment. Only one instance of computer system 700 will be describedfor discussion purposes, but it will be recognized that computer system700 may be implemented for other entities described above, such as[other entities].

Computer system 700 includes a bus 702, network interface 704, acomputer processor 706, a memory 708, a storage device 710, and adisplay 712.

Bus 702 may be a communication mechanism for communicating information.Computer processor 706 may execute computer programs stored in memory708 or storage device 708. Any suitable programming language can be usedto implement the routines of particular embodiments including C, C++,Java, assembly language, etc. Different programming techniques can beemployed such as procedural or object oriented. The routines can executeon a single computer system 700 or multiple computer systems 700.Further, multiple computer processors 706 may be used.

Memory 708 may store instructions, such as source code or binary code,for performing the techniques described above. Memory 708 may also beused for storing variables or other intermediate information duringexecution of instructions to be executed by processor 706. Examples ofmemory 708 include random access memory (RAM), read only memory (ROM),or both.

Storage device 710 may also store instructions, such as source code orbinary code, for performing the techniques described above. Storagedevice 710 may additionally store data used and manipulated by computerprocessor 706. For example, storage device 710 may be a database that isaccessed by computer system 700. Other examples of storage device 710include random access memory (RAM), read only memory (ROM), a harddrive, a magnetic disk, an optical disk, a CD-ROM, a DVD, a flashmemory, a USB memory card, or any other medium from which a computer canread.

Memory 708 or storage device 710 may be an example of a non-transitorycomputer-readable storage medium for use by or in connection withcomputer system 700. The non-transitory computer-readable storage mediumcontains instructions for controlling a computer system 700 to beconfigured to perform functions described by particular embodiments. Theinstructions, when executed by one or more computer processors 706, maybe configured to perform that which is described in particularembodiments.

Computer system 700 includes a display 712 for displaying information toa computer user. Display 712 may display a user interface used by a userto interact with computer system 700.

Computer system 700 also includes a network interface 704 to providedata communication connection over a network, such as a local areanetwork (LAN) or wide area network (WAN). Wireless networks may also beused. In any such implementation, network interface 704 sends andreceives electrical, electromagnetic, or optical signals that carrydigital data streams representing various types of information.

Computer system 700 can send and receive information through networkinterface 704 across a network 714, which may be an Intranet or theInternet. Computer system 700 may interact with other computer systems700 through network 714. In some examples, client-server communicationsoccur through network 714. Also, implementations of particularembodiments may be distributed across computer systems 700 throughnetwork 714.

Particular embodiments may be implemented in a non-transitorycomputer-readable storage medium for use by or in connection with theinstruction execution system, apparatus, system, or machine. Thecomputer-readable storage medium contains instructions for controlling acomputer system to perform a method described by particular embodiments.The computer system may include one or more computing devices. Theinstructions, when executed by one or more computer processors, may beconfigured to perform that which is described in particular embodiments.

As used in the description herein and throughout the claims that follow,“a”, “an”, and “the” includes plural references unless the contextclearly dictates otherwise. Also, as used in the description herein andthroughout the claims that follow, the meaning of “in” includes “in” and“on” unless the context clearly dictates otherwise.

The above description illustrates various embodiments along withexamples of how aspects of particular embodiments may be implemented.The above examples and embodiments should not be deemed to be the onlyembodiments, and are presented to illustrate the flexibility andadvantages of particular embodiments as defined by the following claims.Based on the above disclosure and the following claims, otherarrangements, embodiments, implementations and equivalents may beemployed without departing from the scope hereof as defined by theclaims.

What is claimed is:
 1. A method comprising: receiving, by a computingdevice, a call from a caller device that is initiated via a firstcommunication channel and directed to first contact information for arecipient's device, the call being forwarded using a call forwardingoption to the computing device; retrieving, by the computing device,second contact information for the recipient's device, the secondcontact information different from the first contact information used inthe call; initiating, by the computing device, a communication to therecipient's device using the second contact information via a secondcommunication channel that is different from the first communicationchannel, wherein the communication avoids triggering the call forwardingoption for the recipient's device; and connecting, by the computingdevice, the call between the caller device and the recipient's deviceupon initiating the communication, wherein the computing device is in acall path of the call and performs a call feature for the call.
 2. Themethod of claim 1, wherein the call forwarding option comprises anunconditional call forwarding option.
 3. The method of claim 1, whereinthe call forwarding option is triggered during the call to therecipient's device, and wherein the first communication channelcomprises a Public Switched Telephone Network (PSTN), and whereininitiating the communication comprises: initiating a voice over InternetProtocol (VoIP) communication to the recipient's device at the secondcontact information, wherein the VoIP communication avoids triggeringthe call forwarding option for the recipient's device.
 4. The method ofclaim 1, wherein initiating the communication comprises: sending anotification to the recipient's device at the second contact informationusing the second communication channel; receiving a communication fromthe recipient's device; and connecting the call between the callerdevice and the recipient's device upon receiving the communication fromthe recipient's device.
 5. The method of claim 4, wherein thecommunication from the recipient's device is a PSTN communication or aVOIP communication.
 6. The method of claim 1, wherein the callforwarding option forwards all calls to the first contact informationvia the first communication channel to the computing device but does notforward all calls to the second contact information to the computingdevice.
 7. The method of claim 1, wherein connecting the call comprises:connecting a first leg of the call between the caller device and thecomputing device; and connecting a second leg of the call between thecomputing device and the recipient's device, wherein the computingdevice bridges the first leg of the call and the second leg of the call.8. The method of claim 1, wherein the call feature comprises: connectinga first leg of the call between the caller device and the computingdevice via a voice mode of communication; and connecting a second leg ofthe call between the computing device and the recipient's device via atext mode of communication, wherein the computing device bridges thefirst leg of the call via voice and the second leg of the call via textusing a speech to text converter and a text to speech converter.
 9. Themethod of claim 1, wherein the call feature comprises: maintaining alist of caller number and corresponding actions to perform; andperforming an action for the call based on third contact information forthe caller device.
 10. The method of claim 1, wherein: the firstcommunication channel comprises a PSTN, and the second communicationchannel comprises one of the PSTN and a VOIP channel.
 11. The method ofclaim 1, further comprising: screening the call from the caller devicebefore initiating the communication to the recipient's user device;translating voice media from the caller device to text during thescreening; and providing the text to the recipient's user device. 12.The method of claim 1, wherein the computing device receives voicetransmitted between the caller device and the recipient's device via thecall path.
 13. A method comprising: receiving, by a computing device, acall from a caller device that is directed to first contact informationfor a recipient's device, the call forwarded from the recipient's deviceusing a call forwarding option; analyzing, by the computing device, thecall to determine the call forwarding option from a plurality of callforwarding options that was used to forward the call; selecting, by thecomputing device, a mechanism to connect the call between the callerdevice and the recipient's device with the computing device in a callpath of the call, the mechanism selected from a plurality of mechanismsbased on the determining of the call forwarding option; initiating, bythe computing device, a communication to the recipient's device usingthe mechanism, wherein the mechanism avoids triggering the callforwarding option set for the recipient's device; and connecting, by thecomputing device, the call between the caller device and the recipient'sdevice upon initiating the communication, wherein the computing deviceis in the call path of the call and performs a call feature for thecall.
 14. The method of claim 13, wherein performing the call featurecomprises: connecting a first leg of the call between the caller deviceand the computing device via a voice mode of communication; andconnecting a second leg of the call between the computing device and therecipient's device via a PSTN call or a VoIP call, wherein the computingdevice simultaneously sends voice and text to the recipient's device.15. The method of claim 13, wherein the plurality of call forwardingoptions comprise an unconditional call forwarding option and aconditional call forwarding option.
 16. A method comprising: retrieving,by a computing device, first contact information for a recipient'sdevice; sending, by the computing device, a notification to arecipient's device at the first contact information, the notificationindicating a caller device has made a call to the recipient; receiving,by the computing device, a communication from the recipient's devicefrom second contact information for the recipient's device; andconnecting, by the computing device, a call from the caller device, thecall being directed to the second contact information for therecipient's device, wherein the computing device is in a call path ofthe call and performs a call feature for the call.
 17. The method ofclaim 16, wherein performing the call feature comprises: connecting afirst leg of the call between the caller device and the computingdevice; and connecting a second leg of the call between the computingdevice and the recipient's device, wherein the computing device bridgesthe first leg of the call and the second leg of the call.
 18. The methodof claim 16, wherein the first contact information is retrieved inresponse to receiving the call from the caller device that is directedto the first contact information for the recipient's device, the callforwarded from the recipient's device using a call forwarding option.19. The method of claim 18, wherein the call forwarding option comprisesone of an unconditional call forwarding option and a conditional callforwarding option.
 20. The method of claim 18, wherein: the call fromthe caller device is received from a PSTN, and the notification is sentvia one of a data, PSTN, or a VOIP channel.